package model

import (
	"gorm.io/gorm"
)

// Menu 菜单模型
type Menu struct {
	ID         uint           `gorm:"primaryKey" json:"id"`
	ParentID   uint           `gorm:"not null;default:0" json:"parentId"`
	Name       string         `gorm:"not null;size:100" json:"name"`
	Path       string         `gorm:"size:255" json:"path"`
	Component  string         `gorm:"size:255" json:"component"`
	Icon       string         `gorm:"size:100" json:"icon"`
	Title      string         `gorm:"not null;size:100" json:"title"`
	Order      int            `gorm:"not null;default:0" json:"order"`
	Status     int            `gorm:"not null;default:1" json:"status"` // 0-禁用, 1-正常
	Type       int            `gorm:"not null;default:1" json:"type"`   // 1-目录, 2-菜单, 3-按钮
	Permission string         `gorm:"size:100" json:"permission"`
	CreatedAt  gorm.DeletedAt `json:"createdAt"`
	UpdatedAt  gorm.DeletedAt `json:"updatedAt"`
}

// MenuTree 菜单树形结构
type MenuTree struct {
	Menu
	Children []MenuTree `json:"children,omitempty"`
}

// TableName 设置表名
func (Menu) TableName() string {
	return "menus"
}
